
/**
 * Classes implimenting this interface should have a constructor that takes a 'File' 
 * object and uses that to read in a text file. ALL constructors should require an int
 * which specifies the acceptable number of letters for words to be. This means that
 * there should be no default constructor for this class.
 * 
 * Optionally have a hard-coded default dictionary (Possibly as a static member of the 
 * class) that does not depend on an external file being loaded. Objects constructed 
 * without a 'File' object or with an unusable 'File' object should refer to this default 
 * dictionary.
 * 
 * I suggest having a private method that checks to see if an arbitrary word is valid. 
 * This will simplify writing the constructors and all of the methods. A word is valid
 * if it contains only letters and is exactly the length specified when the Dictionary
 * object is constructed. This can be accomplished in one line with 
 * return astring.matches("^[a-zA-Z]{" + WORDLENGTH + "}$");
 * 
 * Be sure to document this interface/class with RESOLVE-style JavaDoc tags. 
 *
 */
public interface DictionarySuggestions {

	/**
	 * Checks that both words are present in the dictionary and of the required length.
	 * If one or both of these assumptions are violated custom run-time exceptions should 
	 * be thrown. CASE INSENSITIVE.
	 * 
	 * @param word1 String to be checked against word2
	 * @param word2 String to be checked against word1
	 * @return the number of letters shared by the two words.
	 */
	int compareWords(String word1, String word2);
	
	/**
	 * Checks to see if the given word is in the dictionary. CASE INSENSITIVE.
	 * 
	 * @param word the word to be checked against the dictionary
	 * @return true if the word is in the dictionary, false otherwise.
	 */
	boolean containsWord(String word);
}
